package br.com.financas.bean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

import br.com.financas.abstractions.IContaService;
import br.com.financas.entity.Conta;
import br.com.financas.entity.Usuario;
import br.com.financas.service.ContaService;

@ManagedBean
@ViewScoped
public class TransferenciaContaBean extends AbstractBean {
	@ManagedProperty(value = UsuarioBean.INJECTION_NAME)
	private UsuarioBean usuarioBean;
	private List<Conta> contaList = new ArrayList<Conta>();
	private IContaService<Conta> contaService = new ContaService();
	private Usuario usuario =  new Usuario();
	private Conta contaOrigem = new Conta();
	private Conta contaDestino = new Conta();
	private double valor;
	
	
	public TransferenciaContaBean(){
	}
	
	public List<Conta> getContaList() {
		usuario = usuarioBean.getUsuario();
		contaList = contaService.obterPorUsuario(usuario);
		return contaList;
	}
	
	public void setUsuarioBean(UsuarioBean usuarioBean) {
		this.usuarioBean = usuarioBean;
	}

	public Conta getContaOrigem() {
		return contaOrigem;
	}

	public void setContaOrigem(Conta contaOrigem) {
		this.contaOrigem = contaOrigem;
	}
	
	public Conta getContaDestino() {
		return contaDestino;
	}

	public void setContaDestino(Conta contaDestino) {
		this.contaDestino = contaDestino;
	}
	
	public double getValor() {
		return valor;
	}

	public void setValor(double valor) {
		this.valor = valor;
	}

	public String transferir(){
		String retorno = "/listar-contas.xhtml";
		String msgErro = contaService.validarTransferir(contaOrigem, contaDestino, valor);
		if(msgErro != null){
			displayWarnMessageToUser(msgErro);
			retorno = null;
		}else{
			displayInfoMessageToUser("transferencia.sucesso");
		}
		
		return retorno;
	}
	
}
